package com.osell.selection.data.network;

import com.osell.selection.data.network.entity.HomeInfo;
import com.osell.selection.data.network.entity.ProductDetail;
import com.osell.selection.data.network.entity.ResponseData;
import com.osell.selection.data.network.entity.Reward;
import com.osell.selection.data.network.entity.SilkHomeInfo;
import com.osell.selection.data.network.entity.StoreHomeInfo;
import com.osell.selection.data.network.entity.User;

import io.reactivex.Single;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Headers;
import retrofit2.http.POST;

public interface OSellService {

    /**
     * 自动创建用户接口
     */
    @POST("Login-userapi_20180801")
    @Headers("Content-Type: application/x-www-form-urlencoded; charset=utf-8")
    Single<ResponseData<User>> autoSignUp();

    /**
     * 获取登录信息
     */
    @FormUrlEncoded
    @POST("Login-autologin")
    Single<ResponseData<User>> autoLogin(@Field("user_id") String userId,
                                         @Field("user_key") String userKey);

    /**
     * 获取登录信息
     */
    @FormUrlEncoded
    @POST("Login-authsel")
    Single<ResponseData<User>> getSignedInInfo(@Field("openid") String openId);

    /**
     * 首页分类（列表）
     *
     * @param cid 分类类别ID，不传时为获取分类和首页产品
     */
    @FormUrlEncoded
    @POST("Index-index")
    Single<ResponseData<HomeInfo>> getCategoriesProducts(@Field("version") Integer version,
                                                         @Field("cid") String cid,
                                                         @Field("p") Integer pageNumber);

    /**
     * 产品详情
     */
    @FormUrlEncoded
    @POST("Product-details")
    Single<ResponseData<ProductDetail>> getProductDetail(@Field("product_number") String productNumber,
                                                         @Field("id") String userId,
                                                         @Field("user_key") String userKey);

    /**
     * 添加评论
     */
    @FormUrlEncoded
    @POST("Product-saveeval")
    Single<ResponseData<String>> addProductComment(@Field("id") String userId,
                                                   @Field("user_key") String userKey,
                                                   @Field("pid") String productId,
                                                   @Field("product_number") String productNumber,
                                                   @Field("comment_content") String commentContent,
                                                   @Field("grade") Integer rating,
                                                   @Field("imglist") String images,
                                                   @Field("pnum") String productNumber2);

    /**
     * 添加奖励
     */
    @FormUrlEncoded
    @POST("Product-insertearning")
    Single<ResponseData<Reward>> addReward(@Field("id") String userId,
                                           @Field("user_key") String userKey,
                                           @Field("pid") String productId,
                                           @Field("pnum") String productNumber);

    /**
     * 挖矿首页数据 待收取列表 已收取列表 总算力值 总silk
     */
    @FormUrlEncoded
    @POST("Power-powerin")
    Single<ResponseData<SilkHomeInfo>> getSilkHomeInfo(@Field("id") String userId,
                                                       @Field("user_key") String userKey);

    /**
     * 收取SILK
     */
    @FormUrlEncoded
    @POST("Power-collect")
    Single<ResponseData<String>> receiveSilkProduceRecord(@Field("id") String userId,
                                                          @Field("user_key") String userKey,
                                                          @Field("uuid") String uuId);

    /**
     * Store首页
     */
    @POST("index-store")
    @Headers("Content-Type: application/x-www-form-urlencoded; charset=utf-8")
    Single<ResponseData<StoreHomeInfo>> getStoreHomeInfo();

}
